零基础掌握Istio on Kubernetes开发与运维
目前,服务网格是云原生范畴中最热门的话题。随着容器越来越流行,服务拓扑也频繁变动,这就需要更好的网络性能。服务网格能够通过服务发现、路由、负载均衡、心跳检测和支持可观测性,帮助开发人员管理网络流量。服务网格将为无规则的、复杂的容器问题提供规范化的解决方案。
Istio是当前业界服务网格领域中最流行的实现,可帮助开发人员在混合环境中简化运行和操作云原生服务架构的应用。Istio使得开发人员能使用自己喜欢的编程语言构建服务功能,这有效提升了开发人员的生产力,同时免于将解决分布式系统问题的代码糅合到业务代码中。
Istio是一个开源项目,拥有一个充满活力、开放和多元化的社区,它的目标是赋能开发人员和运维人员,使他们在所有环境中都能敏捷地发布和维护微服务,拥有底层网络的完全可见性,且获得一致的控制和安全能力。
今天,小编为大家推荐《Istio服务网格技术解析与实践》。在本书中,将展示如何利用Istio的功能在云原生世界中运行微服务应用。
目 录 Contents
序 一
序 二
序 三
前 言
初级篇
第1章 服务网格与Istio 2
1.1 微服务架构的发展与挑战 2
1.2 使用应用程序库解决这些挑战 4
1.2.1 特定应用程序库的缺点 5
1.2.2 将这些问题推向基础设施 6
1.3 什么是服务网格 7
1.4 为什么服务网格是必要的 10
1.5Istio服务网格 11
1.5.1 核心功能 12
1.5.2 为什么要使用Istio 14
1.5.3 成熟度和支持级别 15
1.6 本章总结 16
第2章 快速上手Istio 17
2.1 在MiniKube上搭建Istio环境 17
2.1.1 安装启动Minikube 17
2.1.2 安装部署Helm 18
2.1.3 安装部署Istio 19
2.2 在Docker Desktop上搭建Istio环境 22
2.2.1 安装配置Docker Desktop for
Kubernetes 22
2.2.2 切换Kubernetes 24
2.2.3 安装部署Helm 26
2.2.4 安装部署Istio 26
2.3 使用公有云Istio服务 28
2.4 在Istio中部署第一个应用程序 31
2.5 本章总结 39
第3章 Istio架构剖析 40
3.1Istio的整体架构 40
3.2 剖析Istio控制平面 42
3.3 剖析Istio数据平面 45
3.3.1Envoy代理 45
3.3.2Envoy的启动配置 47
3.3.3Envoy静态与动态配置 47
3.3.4 使用Envoy 51
3.3.5Envoy请求重试 56
3.3.6Envoy的Admin API 58
3.3.7Envoy与其他类似代理的比较 61
3.4 剖析Sidecar自动注入 62
3.4.1Kubernetes的Webhook机制 62
3.4.2 启用Webhook插件 63
3.4.3 采用Webhook自动注入Istio Sidecar 63
3.4.4 开启需要自动注入Sidecar的命名空间 66
3.5 本章总结 67
中级篇
第4章 东西向流量管理 70
4.1 流量管理 70
4.1.1 术语 72
4.1.2 流量拆分与导向 72
4.1.3Istio服务与Kubernetes服务 73
4.1.4 示例 76
4.2 实现东西向流量路由 83
4.2.1 自动 Sidecar 注入 84
4.2.2 部署 85
4.2.3 查看Ingress Gateway的地址 85
4.2.4 请求路由 86
4.3 实现流量镜像及对比分析 89
4.3.1 流量镜像 89
4.3.2 流量对比 89
4.3.3 创建用于Istio流量镜像的服务 90
4.3.4 创建流量镜像的Istio策略 92
4.3.5 搭建Diffy用于请求流量对比 93
4.3.6 发送流量进行镜像验证 96
4.4 通过Istio管理应用的灰度发布 99
4.4.1Kubernetes中的灰度发布 100
4.4.2 使用 Istio进行灰度发布 101
4.4.3 统一的流量路由规则 102
4.5 本章总结 103
第5章 南北向流量管理 104
5.1Istio 网关 104
5.1.1Istio网关的工作原理 104
5.1.2Istio网关的负载均衡作用 105
5.1.3 入口网关服务 107
5.1.4 入口网关部署 107
5.1.5 网关资源 108
5.1.6 网关虚拟服务 109
5.1.7 调试入口网关 109
5.2 用HTTPS 加密网关 110
5.2.1 为入口网关配置TLS 111
5.2.2 创建示例服务 112
5.2.3 定义虚拟服务 112
5.2.4 通过网关请求示例服务 113
5.2.5 为多个主机配置 TLS入口网关 114
5.3 基于SNI的TLS路由 119
5.3.1 定义内部服务nginx 121
5.3.2 定义内部服务nginx2 122
5.3.3 部署网关 124
5.3.4 根据域名进行访问 125
5.4 服务条目 126
5.4.1 服务条目基本原理 126
5.4.2 服务条目的定义参数 127
5.5 实现出口流量路由的统一管理 130
5.5.1 出口安全 130
5.5.2 创建客户端 131
5.5.3HTTP流量网关 131
5.5.4HTTPS流量网关 133
5.5.5 出口流量的TLS发起 136
5.6 实现服务条目的DNS寻址 137
5.6.1CoreDNS 及其插件工作机制 138
5.6.2Kubernetes下的CoreDNS 139
5.6.3 部署Istio CoreDNS 140
5.6.4 更改集群CoreDNS配置 140
5.6.5 创建服务条目验证DNS解析 141
5.7 本章总结 142
第6章 流量治理 144
6.1 使用流量策略 144
6.1.1 目标规则 144
6.1.2 流量策略 145
6.2 设置负载均衡 146
6.2.1 标准负载均衡算法 147
6.2.2 会话保持 147
6.2.3 示例 147
6.3 熔断 150
6.3.1 连接池管理 151
6.3.2 异常检测 152
6.3.3 创建示例服务 152
6.3.4 使用fortio触发熔断 154
6.4 服务重试 157
6.5 故障注入 160
6.6 命名空间隔离下的流量管理 165
6.6.1Sidecar资源定义 165
6.6.2 示例 166
6.7 本章总结 169
第7章 安全 170
7.1Istio安全架构 170
7.1.1Istio身份模型 172
7.1.2Istio公钥基础设施 172
7.1.3Istio证书和密钥轮换机制 173
7.2 剖析认证机制 173
7.2.1 认证架构 174
7.2.2 双向TLS认证 175
7.2.3 认证策略 175
7.3 使用认证策略 175
7.3.1Istio默认认证策略 177
7.3.2 认证策略示例 177
7.3.3 双向认证策略检查 180
7.4 使用自定义CA证书和密钥 181
7.4.1 准备证书和密钥 181
7.4.2 插入证书和密钥 184
7.4.3 检查新证书 185
7.5 使用cert-manager管理网关证书 186
7.5.1 生成签名密钥对 186
7.5.2 将签名密钥对保存为Secret 186
7.5.3 部署cert-manager 186
7.5.4 创建引用Secret的Issuer 187
7.5.5 获得签名证书 187
7.5.6 检查证书与密钥 188
7.5.7 部署自定义网关 189
7.5.8 定义Kubernetes服务 192
7.5.9 创建虚拟服务 194
7.6 剖析授权机制 196
7.6.1 启用全局授权 197
7.6.2Istio授权策略 197
7.6.3 授权策略示例 199
7.6.4 诊断授权策略 201
7.7 本章总结 206
第8章 Mixer的控制与观测 207
8.1Mixer架构设计 207
8.2 剖析适配器机制 209
8.2.1 属性及表达式 209
8.2.2 配置模型 212
8.2.3 处理程序 212
8.2.4 示例 213
8.2.5 规则 214
8.3 指标数据收集 214
8.3.1metric模板 214
8.3.2Prometheus适配器的配置 215
8.3.3 监控指标 216
8.3.4 配置Istio收集指标 218
8.3.5 查询Istio指标 220
8.3.6 可视化Istio指标 221
8.4 集成日志数据收集 222
8.4.1logentry模板 223
8.4.2stdio适配器的配置 224
8.4.3 配置Istio日志 225
8.4.4 查看日志 226
8.4.5 安装EFK软件栈 227
8.4.6 为Fluentd适配器配置Istio资源 231
8.4.7 通过Kibana查看日志 232
8.5 启用基于Zipkin或Jaeger的分布式跟踪 234
8.5.1Istio跟踪采样率 235
8.5.2 部署应用示例 236
8.5.3 启用Zipkin 238
8.5.4 启用Jaeger 238
8.6 启用速率限制策略 240
8.6.1 配额模板 240
8.6.2 速率限制配置 241
8.6.3 部署应用示例 243
8.7 启用黑白名单策略 244
8.7.1list适配器及模板 245
8.7.2 部署应用示例 246
8.7.3 部署适配器示例 246
8.7.4 校验白名单策略 247
8.8 本章总结 248
高级篇
第9章 Istio稳定性与运维 250
9.1Istio功能模块的稳定性与常见问题 250
9.1.1 可能的请求错误排查 252
9.1.2 证书有效期管理 254
9.1.3 使用SDS动态管理证书 257
9.2Istio流量管理相关运维 258
9.2.1 路由规则对应用程序不生效 258
9.2.2Sidecar是否注入 258
9.2.3Istio配置参数优化 259
9.2.4Envoy 无法连接 HTTP1.0 260
9.2.5 检查Envoy与Pilot状态差异 260
9.3Istio组件升级与回滚 261
9.3.1 升级安装文件 261
9.3.2CRD升级 262
9.3.3 控制平面升级 262
9.3.4 数据平面Sidecar升级 263
9.3.5 升级中的影响分析 264
9.4 本章总结 267
第10章 Istio定制与扩展 268
10.1Mixer适配器扩展 268
10.2 实现适配器 270
10.3 编译与打包适配器 283
10.4Istio CNI插件 287
10.4.1 安装配置Istio CNI插件 288
10.4.2 运行机制 289
10.4.3 验证CNI插件链配置 292
10.4.4 验证iptables是否已修改 293
10.5 从Kubernetes扩展到虚拟机 294
10.5.1 网格扩展 294
10.5.2 生成Istio的配置cluster.env 297
10.5.3 生成DNS配置文件kubedns 297
10.5.4 获取Istio服务账户密钥 298
10.5.5 在虚拟机上进行配置 298
10.5.6 部署应用示例到网格扩展 300
10.6 扩展Envoy过滤器 307
10.6.1 定义Envoy过滤器 307
10.6.2 部署示例应用 310
10.7 集成外部Zipkin兼容服务 312
10.7.1 集成部署 312
10.7.2 使用原生Zipkin 314
10.7.3 使用Zipkin兼容服务 315
10.8 本章总结 316
第11章 Knative:基于Istio的无服务器计算 317
11.1Knative架构解析 317
11.1.1Knative > Kubernetes + Istio 318
11.1.2Knative的设计 319
11.1.3 安装Knative 320
11.2Knative Build运行机制 321
11.2.1Knative Build资源定义 322
11.2.2 创建Knative Build示例 322
11.2.3 验证使用Knative Build构建的镜像 326
11.3Knative Eventing运行机制 327
11.3.1 架构设计 327
11.3.2 创建Knative Eventing示例 329
11.3.3 验证事件 331
11.4 基于Istio实现Serving组件 331
11.4.1Knative Serving的设计 331
11.4.2 基于Serving实现source-to-
URL部署 333
11.5 在Istio上部署配置Knative 336
11.6 基于Knative Serving的自动伸缩 337
11.6.1 路由与自动伸缩 338
11.6.2 自动伸缩机制 340
11.6.3 自动伸缩算法 341
11.6.4 基于Serving实现自动伸缩示例 343
11.6.5 使用蓝绿部署路由和管理流量 345
11.7 本章总结 348
第12章 多集群管理 349
12.1 服务网格的未来 350
12.2 多集群部署管理 351
12.3 单控制平面VPN连接拓扑 351
12.3.1 前提约束 352
12.3.2 拓扑架构 352
12.3.3 启用双向TLS通信 354
12.3.4 部署本地控制平面 354
12.3.5 安装istio-remote 356
12.3.6 部署示例应用 359
12.4 单控制平面Gateway连接拓扑 361
12.4.1 集群感知的服务路由 361
12.4.2Istio控制平面组件 362
12.4.3istio-remote组件 363
12.4.4 部署示例应用 365
12.5 多控制平面 366
12.5.1 部署控制平面 366
12.5.2 设置DNS 368
12.5.3 部署示例应用 369
12.5.4 跨集群的版本路由 371
12.6 本章总结 374
上下滑动查看
点击上方链接了解详情并购买
上新 | 从0到1构建用户画像系统技术和方法论
上新 | 智能领域系统能力培养大成之作!——《智能计算系统》重磅出版!
上新 | “Flutter中文网”社区创始人倾力撰写的网红书 《Flutter实战》正式出版上新 | “计算机伦理学”——计算机科学专业的必修课上新 | 带你了解增强现实的基础理论、核心技术、系统架构以及激动人心的应用和未来